added some development tools
[windows-sources.git] / developer / Samples / NET 4.6 / Samples for Parallel / ParallelExtensionsExtras / Extensions / ParallelLinqOptions.cs
blobfd8c36c1111becce2c8223bd04501f6972bc6a1e
1 //--------------------------------------------------------------------------
2 //
3 // Copyright (c) Microsoft Corporation. All rights reserved.
4 //
5 // File: ParallelLinqOptions.cs
6 //
7 //--------------------------------------------------------------------------
9 using System.Threading;
10 using System.Threading.Tasks;
12 namespace System.Linq
14 /// <summary>Provides a grouping for common Parallel LINQ options.</summary>
15 public sealed class ParallelLinqOptions : ParallelOptions
17 private ParallelExecutionMode _executionMode = ParallelExecutionMode.Default;
18 private ParallelMergeOptions _mergeOptions = ParallelMergeOptions.Default;
19 private bool _ordered = false;
21 /// <summary>Gets or sets the execution mode.</summary>
22 public ParallelExecutionMode ExecutionMode
24 get { return _executionMode; }
25 set
27 if (value != ParallelExecutionMode.Default &&
28 value != ParallelExecutionMode.ForceParallelism) throw new ArgumentOutOfRangeException("ExecutionMode");
29 _executionMode = value;
33 /// <summary>Gets or sets the merge options.</summary>
34 public ParallelMergeOptions MergeOptions
36 get { return _mergeOptions; }
37 set
39 if (value != ParallelMergeOptions.AutoBuffered &&
40 value != ParallelMergeOptions.Default &&
41 value != ParallelMergeOptions.FullyBuffered &&
42 value != ParallelMergeOptions.NotBuffered) throw new ArgumentOutOfRangeException("MergeOptions");
43 _mergeOptions = value;
47 /// <summary>Gets or sets whether the query should retain ordering.</summary>
48 public bool Ordered
50 get { return _ordered; }
51 set { _ordered = value; }